#include "myserverclient.h"
#include <QDebug>
#include <QJsonObject>
#include <QJsonDocument>
#include "mydata.h"
#include "mysql.h"
#include "myservergateway.h"

MyServerClient *MyServerClient::obj = nullptr;

MyServerClient *MyServerClient::getObject()
{
    if(obj == nullptr)
        obj = new MyServerClient;
    return obj;
}

void MyServerClient::handleFrame(const QByteArray &data, int src)
{
    qDebug() << "Client" << data;
    QJsonObject jsonData = QJsonDocument::fromJson(data).object();
    if(!jsonData.contains("index"))
        return;
    int index = jsonData.value("index").toInt();
    if(index == 4101)
    {//请求传感数据
        QJsonObject jsonData;
        jsonData.insert("index", 3001);
        jsonData.insert("co2", MyData::getObject()->co2);
        jsonData.insert("smoke", MyData::getObject()->smoke);
        jsonData.insert("pm2_5", MyData::getObject()->pm2_5);
        jsonData.insert("illumination", MyData::getObject()->illumination);
        jsonData.insert("inf1", MyData::getObject()->inf1);
        jsonData.insert("inf2", MyData::getObject()->inf2);
        jsonData.insert("methane", MyData::getObject()->methane);
        jsonData.insert("ultraviolet_rays", MyData::getObject()->ultraviolet_rays);
        jsonData.insert("fire", MyData::getObject()->fire);
        jsonData.insert("antiphoto", MyData::getObject()->antiphoto);
        jsonData.insert("reflection", MyData::getObject()->reflection);
        jsonData.insert("temperature", MyData::getObject()->temperature);
        jsonData.insert("humidity", MyData::getObject()->humidity);
        sendDataToClient(QJsonDocument(jsonData).toJson(), src);
    }
    else if(index == 4201)
    {//登录
        QString username = jsonData.value("username").toString();
        QString password = jsonData.value("password").toString();
        bool ok = MySql::getObject()->userLogin(username, password);
        QJsonObject jsonData;
        jsonData.insert("index", 3101);
        jsonData.insert("status", ok);
        sendDataToClient(QJsonDocument(jsonData).toJson(), src);
    }
    else if(index == 4202)
    {//注册
        QString username = jsonData.value("username").toString();
        QString password = jsonData.value("password").toString();
        QString phone = jsonData.value("phone").toString();
        QString email = jsonData.value("email").toString();
        int re = MySql::getObject()
                ->userRegister(username, password, phone, email);
        QJsonObject jsonData;
        jsonData.insert("index", 3102);
        jsonData.insert("status", re == 0 ? true : false);
        if(re > 0)
        {
            jsonData.insert("error_id", re);
            switch (re) {
            case 1:
                jsonData.insert("error_inf", "用户名已存在");
                break;
            case 2:
                jsonData.insert("error_inf", "密码过短");
                break;
            }
        }
        sendDataToClient(QJsonDocument(jsonData).toJson(), src);
    }
    else if(index >= 4001 && index <= 4009)
    {
        jsonData.insert("index", index - 3000);
        MyServerGateway::getObject()
                ->sendDataToAllClient(
                    QJsonDocument(jsonData).toJson());
    }
}




